﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Collections;
using Interfaces;

namespace Model
{
    public class MedarbejderColl
    {
        // Attributter
        private List<Medarbejder> medarbejdere; // Aggregering af medarbejdere

        // Konstruktør
        public MedarbejderColl()
        {
            medarbejdere = new List<Medarbejder>(); // Laver medarbejder-listen
        }

        #region Operationer på medarbejder-objekter

        // Metode der skaber det enkelte medarbejderobjekt i listen
        public void OpretMedarbejder(int medarbNr, string navn)
        {
            Medarbejder medarbejder = new Medarbejder(medarbNr, navn);
            medarbejdere.Add(medarbejder); // Tilføjer til listen
        }

        // Metode til at finde en medarbejder
        public Medarbejder FindMedarbejder(int medarbNr)
        {
            foreach (Medarbejder medarbejder in medarbejdere)
            {
                if (medarbejder.MedarbNr == medarbNr)
                {
                    return medarbejder;
                }
            }
            return null;
        }

        //Metode til at finde et medarbejdernummer ud fra navnet
        public int FindMedarbNrUdFraNavn(string navn)
        {
            foreach (Medarbejder medarbejder in medarbejdere)
            {
                if (medarbejder.Navn == navn)
                {
                    return medarbejder.MedarbNr;
                }
            }
            return 0;
        }

        // Metode til at hente liste af medarbejdere
        public IEnumerator GetMedarbejdere()
        {
            return medarbejdere.GetEnumerator();
        }

        #endregion

        #region Associeringsmetoder

        // Kald af metode til at associere et arbejdslogsobjekt
        public void TilknytArbejdslog(int medarbNr, Arbejdslog enArbejdslog)
        {
            Medarbejder medarbejder = FindMedarbejder(medarbNr);
            medarbejder.TilknytArbejdslog(enArbejdslog);
        }

        // Kald af metode til at hente liste af associerede arbejdslogs
        public IEnumerator GetMineArbejdslogs(int medarbNr)
        {
            Medarbejder medarbejder = FindMedarbejder(medarbNr);
            return medarbejder.GetMineArbejdslogs();
        }

        #endregion
    }
}
